import "reflect-metadata";
import { createConnection, getConnection, getManager, getRepository, Not } from "typeorm";
//定义的实体类
import { User } from "./entity/User";
import { connect } from "net";
import { Posts } from "./entity/Posts";
import { UserExtend } from "./entity/UserExtend";

// createConnection().then(async connection => {
//  const user = await getConnection()
//  .createQueryBuilder()
//  .select(['user.id','user.username']) 
//  .from(User,'user')  //从哪张表查，并且定义表的别名
//  .where('user.id=:id',{id:22}) // 过滤条件
//  .getOne() //只查一个
//  console.log(user);
// }).catch(error => console.log(error));

// createConnection().then(async connection => {
//  const user = await getConnection()
//  .createQueryBuilder(User,'user')//从哪张表查，并且定义表的别名
//  .select(['user.id','user.username']) 
// //  .from(User,'user')  
//  .where('user.id=:id',{id:22}) // 过滤条件
//  .getOne() //只查一个
//  console.log(user);
// }).catch(error => console.log(error));


//使用getManager
// createConnection().then(async connection => {
//  const user = await getManager()
//  .createQueryBuilder(User,'user')//从哪张表查，并且定义表的别名
//  .select('user') 
//  .getMany()
//  console.log(user);
// }).catch(error => console.log(error));

//使用getRepository
// createConnection().then(async connection => {
//  const user = await getRepository(User)
//  .createQueryBuilder('user')//从哪张表查，并且定义表的别名
//  .getMany()
//  console.log(user);
// }).catch(error => console.log(error));


// //插入数据
// createConnection().then(async connection=>{
//     const user = await getConnection()
//     .createQueryBuilder()
//     .insert()
//     .into(User) //需要插入的表
//     .values([{username:'ldx122',password:'12341'},{username:'svgd',password:'123dvzcs'}])
//     .execute()
//     console.log(user);
// })
// //更新数据
// createConnection().then(async connection=>{
//     const user = await getConnection()
//     .createQueryBuilder()
//     .update(User)
//     .set({username:'aaa'})
//     .where('user.id=:id',{id:24})
//     .execute() //执行
//     console.log(user);
// })
// //删除数据
// createConnection().then(async connection=>{
//     const user = await getConnection()
//     .createQueryBuilder()
//     .delete()
//     .from(User)
//     .where('user.id=:id',{id:3})
//     .execute()
//     console.log(user);
// })
// //创建关系查询
// createConnection().then(async connection=>{
//     const user = await getConnection()
//     .createQueryBuilder(User,'user')
//     .leftJoinAndMapMany('user.posts',Posts,'posts','user.id=posts.userId')
//     .leftJoinAndMapMany('user.userDetail',UserExtend,'userDetail','user.id=userDetail.userId')
//     // .where('user.id=:id',{id:23})
//     .getMany()
//     console.log(user);
// })

//聚合函数查询
createConnection().then(async connection => {
    // const result = await getConnection()
    //     .createQueryBuilder(User, 'user')
    //     // 使用了聚合函数就要使用getRawOne或者getRawMany方法
    //     .select('SUM(user.isDel)', 'sum')
    //     .getRawOne();
    const result = await getConnection()
    .createQueryBuilder(User,'user')
    // .where('user.username like :username',{username: 'ldx%'})
    // .where('user.username != :username',{username: 'ldx2'})
    .where('user.username IN (:...username)',{username: ['ldx2','xyk']})
    // .setParameter('username','ldx%')
    .getMany()
    console.log(result);
})